package com.cycplus.test.base

import androidx.fragment.app.Fragment

abstract class LazyFragment : Fragment() {

    private var isLoaded = false

    override fun onResume() {
        super.onResume()
        if (!isLoaded && !isHidden) {
            isLoaded = true
            lazyInit()
        }
    }

    override fun onDestroyView() {
        super.onDestroyView()
        isLoaded = false
    }

    /**
     * 由于该方法是调用在onResume中，如果在lazyInit中通过RxJava加载数据，且同时使用了RxLifeCycle进行生命周期绑定，
     * 此时RxLifeCycle取消订阅的事件被设置成了onPause。
     * 建议尽量在绑定RxLifeCycle的时候手动指定绑定事件bindUntilEvent， 避免自己的业务数据Observable被意外取消
     */
    abstract fun lazyInit()

}